<?php
/**
 * Implenta las funciones necesarias para gestionar accesorios
 *
 * @author Daniel Cardoza, Gary Dos Santos, Freddy Rodriguez
 */
class DBAccesorioDAO extends DBMySQLDAO implements IDBAccesorioDAO {

    private $DBConn = null;

    public function  __construct() {
        $conexion = new conexion();
        try {
            $this->DBConn = $conexion->setConnect();
        } catch ( SQLException $Ex ) {
            throw new DBAccesorioDAOException("Se produjo un error al concetar con la base de datos", 1);
        }
    }

     /**
     *Devuelve el precio del id del accesorio que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CAC_PRECIO']
     * @return <bool> false
     * @test
     *
     */
    public function selectPrecio( $id ) {
        $id = addslashes($id);
        
        $str = "SELECT CAC_PRECIO
                    FROM costo_accesorio
                    WHERE CAC_ID = {$id}
                    AND CAC_STATUS = 1";

        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CAC_PRECIO'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el Nombre del id del accesorio que entra por parametro
     *
     * @param int $id
     * @return Accesorio
     * @return false
     * @test
     *
     */
    public function select( $id ) {
        $id = addslashes( $id );

        $str = "SELECT *
                    FROM costo_accesorio
                    WHERE CAC_ID = {$id}
                    AND CAC_STATUS = 1";

        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();

            $accesorio = new Accesorio($fila['CAC_NOMBRE'], $fila['CAC_PRECIO'], 0);

             return $accesorio;
        } else {
            return false;
        }

    }

    /**
     * Setea un bloque con la informacion del accesorio
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function listaNombre() {
        $str = "SELECT CAC_ID, CAC_NOMBRE
                    FROM costo_accesorio
                    WHERE CAC_STATUS = 1";
        
        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1){

            while ( $fila = $this->DBConn->extraer_registro() ) {

                 $lista[] = $fila;
            }

            return $lista;
        } else {
            return false;
        }

    }

     /**
     *Insertar un Accesorio en la base de datos y lo asigna al id del presupuesto
     * que se pasa por parametro
     *
     * @param <Accesorio> $accesorio
     * @param <int> $idPresupuesto
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function insert( Accesorio $accesorio , $idPresupuesto ) {
        $nombre = $accesorio->getNombre();
        $precio = $accesorio->getPrecio();
        $cantidad = $accesorio->getCantidad();

        $this->DBConn->consulta( "INSERT INTO Accesorio (ACC_NOMBRE,ACC_PRECIO, ACC_CANTIDAD)
                                VALUES ('$nombre',$precio,$cantidad) " );

        $this->DBConn->consulta( "SELECT ACC_ID FROM Accesorio
                        WHERE ACC_NOMBRE = '$nombre'
                        AND ACC_PRECIO = $precio
                        AND ACC_CANTIDAD = $cantidad
                        AND ACC_STATUS = 1
                        ORDER BY ACC_ID DESC " );

        $fila = $this->DBConn->extraer_registro();
            $id = $fila[ 'ACC_ID' ];


        $subTotal = $accesorio->calcularSubTotal();
        $this->DBConn->consulta( "INSERT INTO detalle_presupuesto (DPR_SUB_TOTAL,DPR_PTO_ID,DPR_ACC_ID)
                                VALUES ($subTotal, $idPresupuesto, $id)" );
        
        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }

     /**
     *Elimina la informacion de un Accesorio
     *
     * @return boolean
     * @test
     *
     */
    public function delete( $id ){
        $id = addslashes( $id );

        $str = "UPDATE Accesorio
                    SET ACC_STATUS = 0
                    WHERE ACC_ID = {$id}";

        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }


}
?>
